package day14;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;

/*本类用来测试Collection接口*/
public class TestCollection {
    public static void main(String[] args) {
        //1.创建Collection接口相关对象
        //Collection c = new Collection();//报错,因为接口不能实例化
        /*1.<Integer>是泛型,用来约束集合中的元素类型,只能写引用类型,不能写基本类型*/
        Collection<Integer> c = new ArrayList<Integer>();

        //2.1测试常用方法 --测试单个集合的操作
        c.add(100);//向集合中添加元素
        c.add(200);//向集合中添加元素
        c.add(300);//向集合中添加元素
        c.add(400);//向集合中添加元素
        c.add(500);//向集合中添加元素
        System.out.println(c);//直接打印查看集合中的元素

//        c.clear();//[],清空集合中的元素
//        System.out.println(c);
        System.out.println( c.contains(300) );//true,判断集合中是否包含指定元素300
        System.out.println( c.hashCode() );//127240651,返回此集合对应的哈希码
        System.out.println( c.isEmpty() );//false,判断集合是否为空
        System.out.println( c.remove(100) );//true,移出集合中的指定元素100
        System.out.println( c );
        System.out.println( c.size() );//4,获取集合中元素的个数,类似数组的长度
        System.out.println( c.equals(200) );//false,判断集合对象与200是否相等
        System.out.println( c.toArray() );//[Ljava.lang.Object;@1b6d3586
        System.out.println(Arrays.toString(c.toArray()));//把集合转为数组,查看数组元素需要使用工具类

        //2.2测试集合间的操作
        Collection<Integer> c2 = new ArrayList<Integer>();
        c2.add(2);//给c2集合添加元素
        c2.add(4);//给c2集合添加元素
        c2.add(6);//给c2集合添加元素
        System.out.println( c2 );

        c.addAll(c2);//把c2集合中的元素添加到c集合中
        System.out.println(c);
        System.out.println( c.contains(c2) );//false,查看c集合是否包含一个叫c2的元素
        System.out.println( c.containsAll(c2) );//true,查看c集合是否包含c2集合的所有元素

        System.out.println(c);
        System.out.println(c.retainAll(c2));//取c集合中属于c2集合的所有元素"交集"
        System.out.println(c);

//        System.out.println( c.removeAll(c2) );//true,移出c集合中输入c2集合的所有元素
//        System.out.println( c );

        c.add(100);//向集合中添加元素
        c.add(200);//向集合中添加元素
        c.add(300);//向集合中添加元素
        c.add(400);//向集合中添加元素
        c.add(500);//向集合中添加元素
        //2.3 用来遍历/迭代集合中的元素
        /* 0.需要获取这个集合的迭代器
        1.如何获取集合的迭代器 c.iterator()
        2.判断集合是否有下个元素 it.hasNext()
        3.获取当前迭代到的元素 it.next()
        * */
        Iterator<Integer> it = c.iterator();
        //通过iterator迭代器,循环获取集合中的所有元素
        while(it.hasNext()){
            //hasNext用来判断集合是否有下个元素,有就返回true,继续循环取值
            Integer num = it.next();//next()用来获取迭代到的元素
            System.out.println(num);
        }

    }
}
